// // exports.AL_Framework_Byte_Array = exports.EndianConst = exports.Endian = void 0;
// // var i;
// // var n;
// // var a;
// // var s;
// // var r = (function () {
// //     function e() {}
// //     e.LITTLE_ENDIAN = "littleEndian";
// //     e.BIG_ENDIAN = "bigEndian";
// //     return e;
// // })();
// // exports.Endian = r;
// // (s = i = exports.EndianConst || (exports.EndianConst = {}))[(s.LITTLE_ENDIAN = 0)] = "LITTLE_ENDIAN";
// // s[(s.BIG_ENDIAN = 1)] = "BIG_ENDIAN";
// // (a = n || (n = {}))[(a.SIZE_OF_BOOLEAN = 1)] = "SIZE_OF_BOOLEAN";
// // a[(a.SIZE_OF_INT8 = 1)] = "SIZE_OF_INT8";
// // a[(a.SIZE_OF_INT16 = 2)] = "SIZE_OF_INT16";
// // a[(a.SIZE_OF_INT32 = 4)] = "SIZE_OF_INT32";
// // a[(a.SIZE_OF_UINT8 = 1)] = "SIZE_OF_UINT8";
// // a[(a.SIZE_OF_UINT16 = 2)] = "SIZE_OF_UINT16";
// // a[(a.SIZE_OF_UINT32 = 4)] = "SIZE_OF_UINT32";
// // a[(a.SIZE_OF_FLOAT32 = 4)] = "SIZE_OF_FLOAT32";
// // a[(a.SIZE_OF_FLOAT64 = 8)] = "SIZE_OF_FLOAT64";
// // var c = (function () {
// //     function e(e, t) {
// //         if (void 0 === t) {
// //             t = 0;
// //         }
// //         this.bufferExtSize = 0;
// //         this.$endian = null;
// //         this.EOF_byte = -1;
// //         this.EOF_code_point = -1;
// //         if (t < 0) {
// //             t = 0;
// //         }
// //         this.bufferExtSize = t;
// //         var o;
// //         var i = 0;
// //         if (e) {
// //             var n = void 0;
// //             e instanceof Uint8Array ? ((n = e), (i = e.length)) : ((i = e.byteLength), (n = new Uint8Array(e)));
// //             (o = 0 == t ? new Uint8Array(i) : new Uint8Array((1 + ((i / t) | 0)) * t)).set(n);
// //         } else {
// //             o = new Uint8Array(t);
// //         }
// //         this.write_position = i;
// //         this._position = 0;
// //         this._bytes = o;
// //         this.data = new DataView(o.buffer);
// //         this.endian = r.BIG_ENDIAN;
// //     }
// //     Object.defineProperty(e.prototype, "endian", {
// //         get: function () {
// //             return this.$endian == i.LITTLE_ENDIAN ? r.LITTLE_ENDIAN : r.BIG_ENDIAN;
// //         },
// //         set: function (e) {
// //             this.$endian = e == r.LITTLE_ENDIAN ? i.LITTLE_ENDIAN : i.BIG_ENDIAN;
// //         },
// //         enumerable: !1,
// //         configurable: !0
// //     });
// //     e.prototype.setArrayBuffer = function () {};
// //     Object.defineProperty(e.prototype, "readAvailable", {
// //         get: function () {
// //             return this.write_position - this._position;
// //         },
// //         enumerable: !1,
// //         configurable: !0
// //     });
// //     Object.defineProperty(e.prototype, "buffer", {
// //         get: function () {
// //             return this.data.buffer.slice(0, this.write_position);
// //         },
// //         set: function (e) {
// //             var t;
// //             var o = e.byteLength;
// //             var i = new Uint8Array(e);
// //             var n = this.bufferExtSize;
// //             (t = 0 == n ? new Uint8Array(o) : new Uint8Array((1 + ((o / n) | 0)) * n)).set(i);
// //             this.write_position = o;
// //             this._bytes = t;
// //             this.data = new DataView(t.buffer);
// //         },
// //         enumerable: !1,
// //         configurable: !0
// //     });
// //     Object.defineProperty(e.prototype, "rawBuffer", {
// //         get: function () {
// //             return this.data.buffer;
// //         },
// //         enumerable: !1,
// //         configurable: !0
// //     });
// //     Object.defineProperty(e.prototype, "bytes", {
// //         get: function () {
// //             return this._bytes;
// //         },
// //         enumerable: !1,
// //         configurable: !0
// //     });
// //     Object.defineProperty(e.prototype, "dataView", {
// //         get: function () {
// //             return this.data;
// //         },
// //         set: function (e) {
// //             this.buffer = e.buffer;
// //         },
// //         enumerable: !1,
// //         configurable: !0
// //     });
// //     Object.defineProperty(e.prototype, "bufferOffset", {
// //         get: function () {
// //             return this.data.byteOffset;
// //         },
// //         enumerable: !1,
// //         configurable: !0
// //     });
// //     Object.defineProperty(e.prototype, "position", {
// //         get: function () {
// //             return this._position;
// //         },
// //         set: function (e) {
// //             this._position = e;
// //             if (e > this.write_position) {
// //                 this.write_position = e;
// //             }
// //         },
// //         enumerable: !1,
// //         configurable: !0
// //     });
// //     Object.defineProperty(e.prototype, "length", {
// //         get: function () {
// //             return this.write_position;
// //         },
// //         set: function (e) {
// //             this.write_position = e;
// //             if (this.data.byteLength > e) {
// //                 this._position = e;
// //             }
// //             this._validateBuffer(e);
// //         },
// //         enumerable: !1,
// //         configurable: !0
// //     });
// //     e.prototype._validateBuffer = function (e) {
// //         if (this.data.byteLength < e) {
// //             var t = this.bufferExtSize;
// //             var o = void 0;
// //             (o = 0 == t ? new Uint8Array(e) : new Uint8Array((1 + ((e / t) >> 0)) * t)).set(this._bytes);
// //             this._bytes = o;
// //             this.data = new DataView(o.buffer);
// //         }
// //     };
// //     Object.defineProperty(e.prototype, "bytesAvailable", {
// //         get: function () {
// //             return this.data.byteLength - this._position;
// //         },
// //         enumerable: !1,
// //         configurable: !0
// //     });
// //     e.prototype.clear = function () {
// //         var e = new ArrayBuffer(this.bufferExtSize);
// //         this.data = new DataView(e);
// //         this._bytes = new Uint8Array(e);
// //         this._position = 0;
// //         this.write_position = 0;
// //     };
// //     e.prototype.readBoolean = function () {
// //         return !!this.validate(n.SIZE_OF_BOOLEAN) && !!this._bytes[this.position++];
// //     };
// //     e.prototype.readByte = function () {
// //         return this.validate(n.SIZE_OF_INT8) ? this.data.getInt8(this.position++) : 0;
// //     };
// //     e.prototype.readBytes = function (e, t, o) {
// //         if (void 0 === t) {
// //             t = 0;
// //         }
// //         if (void 0 === o) {
// //             o = 0;
// //         }
// //         if (e) {
// //             var i = this._position;
// //             var n = this.write_position - i;
// //             if (!(n < 0)) {
// //                 if (0 == o) {
// //                     o = n;
// //                 } else {
// //                     if (o > n) {
// //                         return;
// //                     }
// //                 }
// //                 var a = e._position;
// //                 e._position = 0;
// //                 e.validateBuffer(t + o);
// //                 e._position = a;
// //                 e._bytes.set(this._bytes.subarray(i, i + o), t);
// //                 this.position += o;
// //             }
// //         }
// //     };
// //     e.prototype.readDouble = function () {
// //         if (this.validate(n.SIZE_OF_FLOAT64)) {
// //             var e = this.data.getFloat64(this._position, this.$endian == i.LITTLE_ENDIAN);
// //             this.position += n.SIZE_OF_FLOAT64;
// //             return e;
// //         }
// //         return 0;
// //     };
// //     e.prototype.readFloat = function () {
// //         if (this.validate(n.SIZE_OF_FLOAT32)) {
// //             var e = this.data.getFloat32(this._position, this.$endian == i.LITTLE_ENDIAN);
// //             this.position += n.SIZE_OF_FLOAT32;
// //             return e;
// //         }
// //         return 0;
// //     };
// //     e.prototype.readInt = function () {
// //         if (this.validate(n.SIZE_OF_INT32)) {
// //             var e = this.data.getInt32(this._position, this.$endian == i.LITTLE_ENDIAN);
// //             this.position += n.SIZE_OF_INT32;
// //             return e;
// //         }
// //         return 0;
// //     };
// //     e.prototype.readShort = function () {
// //         if (this.validate(n.SIZE_OF_INT16)) {
// //             var e = this.data.getInt16(this._position, this.$endian == i.LITTLE_ENDIAN);
// //             this.position += n.SIZE_OF_INT16;
// //             return e;
// //         }
// //         return 0;
// //     };
// //     e.prototype.readUnsignedByte = function () {
// //         return this.validate(n.SIZE_OF_UINT8) ? this._bytes[this.position++] : 0;
// //     };
// //     e.prototype.readUnsignedInt = function () {
// //         if (this.validate(n.SIZE_OF_UINT32)) {
// //             var e = this.data.getUint32(this._position, this.$endian == i.LITTLE_ENDIAN);
// //             this.position += n.SIZE_OF_UINT32;
// //             return e;
// //         }
// //         return 0;
// //     };
// //     e.prototype.readUnsignedShort = function () {
// //         if (this.validate(n.SIZE_OF_UINT16)) {
// //             var e = this.data.getUint16(this._position, this.$endian == i.LITTLE_ENDIAN);
// //             this.position += n.SIZE_OF_UINT16;
// //             return e;
// //         }
// //         return 0;
// //     };
// //     e.prototype.readUTF = function () {
// //         var e = this.readUnsignedShort();
// //         return e > 0 ? this.readUTFBytes(e) : "";
// //     };
// //     e.prototype.readUTFBytes = function (e) {
// //         if (!this.validate(e)) {
// //             return "";
// //         }
// //         var t = this.data;
// //         var o = new Uint8Array(t.buffer, t.byteOffset + this._position, e);
// //         this.position += e;
// //         return this.decodeUTF8(o);
// //     };
// //     e.prototype.writeBoolean = function (e) {
// //         this.validateBuffer(n.SIZE_OF_BOOLEAN);
// //         this._bytes[this.position++] = +e;
// //     };
// //     e.prototype.writeByte = function (e) {
// //         this.validateBuffer(n.SIZE_OF_INT8);
// //         this._bytes[this.position++] = 255 & e;
// //     };
// //     e.prototype.writeBytes = function (e, t, o) {
// //         var i;
// //         if (void 0 === t) {
// //             t = 0;
// //         }
// //         if (void 0 === o) {
// //             o = 0;
// //         }
// //         if (!(t < 0 || o < 0)) {
// //             if ((i = 0 == o ? e.length - t : Math.min(e.length - t, o)) > 0) {
// //                 this.validateBuffer(i);
// //                 this._bytes.set(e._bytes.subarray(t, t + i), this._position);
// //                 this.position = this._position + i;
// //             }
// //         }
// //     };
// //     e.prototype.writeDouble = function (e) {
// //         this.validateBuffer(n.SIZE_OF_FLOAT64);
// //         this.data.setFloat64(this._position, e, this.$endian == i.LITTLE_ENDIAN);
// //         this.position += n.SIZE_OF_FLOAT64;
// //     };
// //     e.prototype.writeFloat = function (e) {
// //         this.validateBuffer(n.SIZE_OF_FLOAT32);
// //         this.data.setFloat32(this._position, e, this.$endian == i.LITTLE_ENDIAN);
// //         this.position += n.SIZE_OF_FLOAT32;
// //     };
// //     e.prototype.writeInt = function (e) {
// //         this.validateBuffer(n.SIZE_OF_INT32);
// //         this.data.setInt32(this._position, e, this.$endian == i.LITTLE_ENDIAN);
// //         this.position += n.SIZE_OF_INT32;
// //     };
// //     e.prototype.writeShort = function (e) {
// //         this.validateBuffer(n.SIZE_OF_INT16);
// //         this.data.setInt16(this._position, e, this.$endian == i.LITTLE_ENDIAN);
// //         this.position += n.SIZE_OF_INT16;
// //     };
// //     e.prototype.writeUnsignedInt = function (e) {
// //         this.validateBuffer(n.SIZE_OF_UINT32);
// //         this.data.setUint32(this._position, e, this.$endian == i.LITTLE_ENDIAN);
// //         this.position += n.SIZE_OF_UINT32;
// //     };
// //     e.prototype.writeUnsignedShort = function (e) {
// //         this.validateBuffer(n.SIZE_OF_UINT16);
// //         this.data.setUint16(this._position, e, this.$endian == i.LITTLE_ENDIAN);
// //         this.position += n.SIZE_OF_UINT16;
// //     };
// //     e.prototype.writeUTF = function (e) {
// //         var t = this.encodeUTF8(e);
// //         var o = t.length;
// //         this.validateBuffer(n.SIZE_OF_UINT16 + o);
// //         this.data.setUint16(this._position, o, this.$endian == i.LITTLE_ENDIAN);
// //         this.position += n.SIZE_OF_UINT16;
// //         this._writeUint8Array(t, !1);
// //     };
// //     e.prototype.writeUTFBytes = function (e, t) {
// //         this._writeUint8Array(this.encodeUTF8(e, t));
// //     };
// //     e.prototype.toString = function () {
// //         return "[AL_Framework_Byte_Array] length:" + this.length + ", bytesAvailable:" + this.bytesAvailable;
// //     };
// //     e.prototype._writeUint8Array = function (e, t) {
// //         if (void 0 === t) {
// //             t = !0;
// //         }
// //         var o = this._position;
// //         var i = o + e.length;
// //         if (t) {
// //             this.validateBuffer(i);
// //         }
// //         this.bytes.set(e, o);
// //         this.position = i;
// //     };
// //     e.prototype.validate = function (e) {
// //         var t = this._bytes.length;
// //         return t > 0 && this._position + e <= t;
// //     };
// //     e.prototype.validateBuffer = function (e) {
// //         this.write_position = e > this.write_position ? e : this.write_position;
// //         e += this._position;
// //         this._validateBuffer(e);
// //     };
// //     e.prototype.encodeUTF8 = function (e, t) {
// //         var o = 0;
// //         var i = this.stringToCodePoints(e);
// //         for (var n = []; i.length > o; ) {
// //             var a = i[o++];
// //             if (this.inRange(a, 55296, 57343)) {
// //                 this.encoderError(a);
// //             } else {
// //                 if (this.inRange(a, 0, 127)) {
// //                     if (null == t) {
// //                         n.push(a);
// //                     } else {
// //                         {
// //                             if (!(n.length + 1 < t)) {
// //                                 break;
// //                             }
// //                             n.push(a);
// //                         }
// //                     }
// //                 } else {
// //                     var s = 0;
// //                     var r = 0;
// //                     this.inRange(a, 128, 2047)
// //                         ? ((s = 1), (r = 192))
// //                         : this.inRange(a, 2048, 65535)
// //                         ? ((s = 2), (r = 224))
// //                         : this.inRange(a, 65536, 1114111) && ((s = 3), (r = 240));
// //                     if (null == t) {
// //                         for (n.push(this.div(a, Math.pow(64, s)) + r); s > 0; ) {
// //                             var c = this.div(a, Math.pow(64, s - 1));
// //                             n.push(128 + (c % 64));
// //                             s -= 1;
// //                         }
// //                     } else {
// //                         {
// //                             var l = 0;
// //                             n.push(this.div(a, Math.pow(64, s)) + r);
// //                             for (l++; s > 0; ) {
// //                                 c = this.div(a, Math.pow(64, s - 1));
// //                                 n.push(128 + (c % 64));
// //                                 s -= 1;
// //                                 l++;
// //                             }
// //                             if (n.length > t) {
// //                                 n.splice(n.length - l, l);
// //                                 break;
// //                             }
// //                         }
// //                     }
// //                 }
// //             }
// //         }
// //         if (null != t && n.length < t) {
// //             for (s = t - n.length; s > 0; ) {
// //                 n.push(0);
// //                 s--;
// //             }
// //         }
// //         return new Uint8Array(n);
// //     };
// //     e.prototype.decodeUTF8 = function (e) {
// //         var t = 0;
// //         var o = "";
// //         var i = null;
// //         var n = 0;
// //         var a = 0;
// //         var s = 0;
// //         for (var r = 0; e.length > t; ) {
// //             var c = e[t++];
// //             if (c == this.EOF_byte) {
// //                 i = 0 != a ? this.decoderError(!1) : this.EOF_code_point;
// //             } else {
// //                 if (0 == a) {
// //                     this.inRange(c, 0, 127)
// //                         ? (i = c)
// //                         : (this.inRange(c, 194, 223)
// //                               ? ((a = 1), (r = 128), (n = c - 192))
// //                               : this.inRange(c, 224, 239)
// //                               ? ((a = 2), (r = 2048), (n = c - 224))
// //                               : this.inRange(c, 240, 244)
// //                               ? ((a = 3), (r = 65536), (n = c - 240))
// //                               : this.decoderError(!1),
// //                           (n *= Math.pow(64, a)),
// //                           (i = null));
// //                 } else {
// //                     if (this.inRange(c, 128, 191)) {
// //                         s += 1;
// //                         n += (c - 128) * Math.pow(64, a - s);
// //                         if (s !== a) {
// //                             i = null;
// //                         } else {
// //                             {
// //                                 var l = n;
// //                                 var d = r;
// //                                 n = 0;
// //                                 a = 0;
// //                                 s = 0;
// //                                 r = 0;
// //                                 i =
// //                                     this.inRange(l, d, 1114111) && !this.inRange(l, 55296, 57343)
// //                                         ? l
// //                                         : this.decoderError(!1, c);
// //                             }
// //                         }
// //                     } else {
// //                         n = 0;
// //                         a = 0;
// //                         s = 0;
// //                         r = 0;
// //                         t--;
// //                         i = this.decoderError(!1, c);
// //                     }
// //                 }
// //             }
// //             if (null !== i && i !== this.EOF_code_point) {
// //                 i <= 65535
// //                     ? i > 0 && (o += String.fromCharCode(i))
// //                     : ((i -= 65536),
// //                       (o += String.fromCharCode(55296 + ((i >> 10) & 1023))),
// //                       (o += String.fromCharCode(56320 + (1023 & i))));
// //             }
// //         }
// //         return o;
// //     };
// //     e.prototype.encoderError = function () {};
// //     e.prototype.decoderError = function (e, t) {
// //         return t || 65533;
// //     };
// //     e.prototype.inRange = function (e, t, o) {
// //         return t <= e && e <= o;
// //     };
// //     e.prototype.div = function (e, t) {
// //         return Math.floor(e / t);
// //     };
// //     e.prototype.stringToCodePoints = function (e) {
// //         var t = [];
// //         var o = 0;
// //         for (var i = e.length; o < e.length; ) {
// //             var n = e.charCodeAt(o);
// //             if (this.inRange(n, 55296, 57343)) {
// //                 if (this.inRange(n, 56320, 57343)) {
// //                     t.push(65533);
// //                 } else {
// //                     if (o == i - 1) {
// //                         t.push(65533);
// //                     } else {
// //                         {
// //                             var a = e.charCodeAt(o + 1);
// //                             if (this.inRange(a, 56320, 57343)) {
// //                                 var s = 1023 & n;
// //                                 var r = 1023 & a;
// //                                 o += 1;
// //                                 t.push(65536 + (s << 10) + r);
// //                             } else {
// //                                 t.push(65533);
// //                             }
// //                         }
// //                     }
// //                 }
// //             } else {
// //                 t.push(n);
// //             }
// //             o += 1;
// //         }
// //         return t;
// //     };
// //     return e;
// // })();
// // exports.AL_Framework_Byte_Array = c;


// /**
//  * Endian 常量类
//  */
// class Endian {
//     static LITTLE_ENDIAN = "littleEndian";
//     static BIG_ENDIAN = "bigEndian";
// }

// exports.Endian = Endian;

// /**
//  * EndianConst 枚举
//  * @enum {number}
//  */
// const EndianConst = {
//     LITTLE_ENDIAN: 0,
//     BIG_ENDIAN: 1
// };

// exports.EndianConst = EndianConst;

// /**
//  * 数据类型大小的常量枚举
//  * @enum {number}
//  */
// const DataTypeSize = {
//     SIZE_OF_BOOLEAN: 1,
//     SIZE_OF_INT8: 1,
//     SIZE_OF_INT16: 2,
//     SIZE_OF_INT32: 4,
//     SIZE_OF_UINT8: 1,
//     SIZE_OF_UINT16: 2,
//     SIZE_OF_UINT32: 4,
//     SIZE_OF_FLOAT32: 4,
//     SIZE_OF_FLOAT64: 8
// };

// exports.DataTypeSize = DataTypeSize;

// /**
//  * AL_Framework_Byte_Array 类
//  */
// class AL_Framework_Byte_Array {
//     /**
//      * 构造函数
//      * @param {ArrayBuffer|Uint8Array} buffer - 初始化缓冲区
//      * @param {number} bufferExtSize - 扩展缓冲区大小
//      */
//     constructor(buffer, bufferExtSize = 0) {
//         this.bufferExtSize = bufferExtSize > 0 ? bufferExtSize : 0;
//         this.$endian = null;
//         this.EOF_byte = -1;
//         this.EOF_code_point = -1;

//         let initialBuffer;
//         if (buffer) {
//             let byteArray;
//             let length = 0;
//             if (buffer instanceof Uint8Array) {
//                 byteArray = buffer;
//                 length = buffer.length;
//             } else {
//                 length = buffer.byteLength;
//                 byteArray = new Uint8Array(buffer);
//             }
//             initialBuffer = this.bufferExtSize === 0 ? new Uint8Array(length) : new Uint8Array(Math.ceil(length / this.bufferExtSize) * this.bufferExtSize);
//             initialBuffer.set(byteArray);
//         } else {
//             initialBuffer = new Uint8Array(this.bufferExtSize);
//         }

//         this.write_position = initialBuffer.byteLength;
//         this._position = 0;
//         this._bytes = initialBuffer;
//         this.data = new DataView(initialBuffer.buffer);
//         this.endian = Endian.BIG_ENDIAN;
//     }

//     /**
//      * 获取或设置字节序
//      */
//     get endian() {
//         return this.$endian === EndianConst.LITTLE_ENDIAN ? Endian.LITTLE_ENDIAN : Endian.BIG_ENDIAN;
//     }

//     set endian(value) {
//         this.$endian = value === Endian.LITTLE_ENDIAN ? EndianConst.LITTLE_ENDIAN : EndianConst.BIG_ENDIAN;
//     }

//     /**
//      * 获取可读取的字节数
//      */
//     get readAvailable() {
//         return this.write_position - this._position;
//     }

//     /**
//      * 获取缓冲区
//      */
//     get buffer() {
//         return this.data.buffer.slice(0, this.write_position);
//     }

//     set buffer(value) {
//         const byteLength = value.byteLength;
//         const byteArray = new Uint8Array(value);
//         const bufferExtSize = this.bufferExtSize;
//         const newBuffer = new Uint8Array(bufferExtSize === 0 ? byteLength : Math.ceil(byteLength / bufferExtSize) * bufferExtSize);
//         newBuffer.set(byteArray);
//         this.write_position = byteLength;
//         this._bytes = newBuffer;
//         this.data = new DataView(newBuffer.buffer);
//     }

//     /**
//      * 获取底层缓冲区
//      */
//     get rawBuffer() {
//         return this.data.buffer;
//     }

//     /**
//      * 获取字节数组
//      */
//     get bytes() {
//         return this._bytes;
//     }

//     /**
//      * 获取或设置 DataView
//      */
//     get dataView() {
//         return this.data;
//     }

//     set dataView(value) {
//         this.buffer = value.buffer;
//     }

//     /**
//      * 获取缓冲区偏移量
//      */
//     get bufferOffset() {
//         return this.data.byteOffset;
//     }

//     /**
//      * 获取或设置读取位置
//      */
//     get position() {
//         return this._position;
//     }

//     set position(value) {
//         this._position = value;
//         if (value > this.write_position) {
//             this.write_position = value;
//         }
//     }

//     /**
//      * 获取或设置数据长度
//      */
//     get length() {
//         return this.write_position;
//     }

//     set length(value) {
//         this.write_position = value;
//         if (this.data.byteLength > value) {
//             this._position = value;
//         }
//         this._validateBuffer(value);
//     }

//     /**
//      * 验证缓冲区大小
//      * @private
//      * @param {number} size
//      */
//     _validateBuffer(size) {
//         if (this.data.byteLength < size) {
//             const bufferExtSize = this.bufferExtSize;
//             const newBuffer = new Uint8Array(bufferExtSize === 0 ? size : Math.ceil(size / bufferExtSize) * bufferExtSize);
//             newBuffer.set(this._bytes);
//             this._bytes = newBuffer;
//             this.data = new DataView(newBuffer.buffer);
//         }
//     }

//     /**
//      * 获取可用字节数
//      */
//     get bytesAvailable() {
//         return this.data.byteLength - this._position;
//     }

//     /**
//      * 清除缓冲区
//      */
//     clear() {
//         const newBuffer = new ArrayBuffer(this.bufferExtSize);
//         this.data = new DataView(newBuffer);
//         this._bytes = new Uint8Array(newBuffer);
//         this._position = 0;
//         this.write_position = 0;
//     }

//     /**
//      * 读取布尔值
//      * @returns {boolean}
//      */
//     readBoolean() {
//         return !!this.validate(DataTypeSize.SIZE_OF_BOOLEAN) && !!this._bytes[this.position++];
//     }

//     /**
//      * 读取字节
//      * @returns {number}
//      */
//     readByte() {
//         return this.validate(DataTypeSize.SIZE_OF_INT8) ? this.data.getInt8(this.position++) : 0;
//     }

//     /**
//      * 读取字节数组
//      * @param {AL_Framework_Byte_Array} byteArray
//      * @param {number} offset
//      * @param {number} length
//      */
//     readBytes(byteArray, offset = 0, length = 0) {
//         if (byteArray) {
//             const availableBytes = this.write_position - this._position;
//             if (availableBytes < 0) return;

//             if (length === 0) {
//                 length = availableBytes;
//             } else if (length > availableBytes) {
//                 return;
//             }

//             byteArray._position = 0;
//             byteArray._validateBuffer(offset + length);
//             byteArray._bytes.set(this._bytes.subarray(this._position, this._position + length), offset);
//             this.position += length;
//         }
//     }

//     /**
//      * 读取双精度浮点数
//      * @returns {number}
//      */
//     readDouble() {
//         if (this.validate(DataTypeSize.SIZE_OF_FLOAT64)) {
//             const value = this.data.getFloat64(this._position, this.$endian === EndianConst.LITTLE_ENDIAN);
//             this.position += DataTypeSize.SIZE_OF_FLOAT64;
//             return value;
//         }
//         return 0;
//     }

//     /**
//      * 读取单精度浮点数
//      * @returns {number}
//      */
//     readFloat() {
//         if (this.validate(DataTypeSize.SIZE_OF_FLOAT32)) {
//             const value = this.data.getFloat32(this._position, this.$endian === EndianConst.LITTLE_ENDIAN);
//             this.position += DataTypeSize.SIZE_OF_FLOAT32;
//             return value;
//         }
//         return 0;
//     }

//     /**
//      * 读取32位整数
//      * @returns {number}
//      */
//     readInt() {
//         if (this.validate(DataTypeSize.SIZE_OF_INT32)) {
//             const value = this.data.getInt32(this._position, this.$endian === EndianConst.LITTLE_ENDIAN);
//             this.position += DataTypeSize.SIZE_OF_INT32;
//             return value;
//         }
//         return 0;
//     }

//     /**
//      * 读取16位整数
//      * @returns {number}
//      */
//     readShort() {
//         if (this.validate(DataTypeSize.SIZE_OF_INT16)) {
//             const value = this.data.getInt16(this._position, this.$endian === EndianConst.LITTLE_ENDIAN);
//             this.position += DataTypeSize.SIZE_OF_INT16;
//             return value;
//         }
//         return 0;
//     }

//     /**
//      * 读取无符号字节
//      * @returns {number}
//      */
//     readUnsignedByte() {
//         return this.validate(DataTypeSize.SIZE_OF_UINT8) ? this._bytes[this.position++] : 0;
//     }

//     /**
//      * 读取无符号32位整数
//      * @returns {number}
//      */
//     readUnsignedInt() {
//         if (this.validate(DataTypeSize.SIZE_OF_UINT32)) {
//             const value = this.data.getUint32(this._position, this.$endian === EndianConst.LITTLE_ENDIAN);
//             this.position += DataTypeSize.SIZE_OF_UINT32;
//             return value;
//         }
//         return 0;
//     }

//     /**
//      * 读取无符号16位整数
//      * @returns {number}
//      */
//     readUnsignedShort() {
//         if (this.validate(DataTypeSize.SIZE_OF_UINT16)) {
//             const value = this.data.getUint16(this._position, this.$endian === EndianConst.LITTLE_ENDIAN);
//             this.position += DataTypeSize.SIZE_OF_UINT16;
//             return value;
//         }
//         return 0;
//     }

//     /**
//      * 读取UTF字符串
//      * @returns {string}
//      */
//     readUTF() {
//         const length = this.readUnsignedShort();
//         return length > 0 ? this.readUTFBytes(length) : "";
//     }

//     /**
//      * 读取指定长度的UTF字节字符串
//      * @param {number} length
//      * @returns {string}
//      */
//     readUTFBytes(length) {
//         if (!this.validate(length)) {
//             return "";
//         }
//         const byteArray = new Uint8Array(this.data.buffer, this.data.byteOffset + this._position, length);
//         this.position += length;
//         return this.decodeUTF8(byteArray);
//     }

//     /**
//      * 写入布尔值
//      * @param {boolean} value
//      */
//     writeBoolean(value) {
//         this.validateBuffer(DataTypeSize.SIZE_OF_BOOLEAN);
//         this._bytes[this.position++] = +value;
//     }

//     /**
//      * 写入字节
//      * @param {number} value
//      */
//     writeByte(value) {
//         this.validateBuffer(DataTypeSize.SIZE_OF_INT8);
//         this._bytes[this.position++] = value & 255;
//     }

//     /**
//      * 写入字节数组
//      * @param {Uint8Array} byteArray
//      * @param {number} offset
//      * @param {number} length
//      */
//     writeBytes(byteArray, offset = 0, length = 0) {
//         if (offset < 0 || length < 0) return;
//         const availableBytes = length === 0 ? byteArray.length - offset : Math.min(byteArray.length - offset, length);
//         if (availableBytes > 0) {
//             this.validateBuffer(availableBytes);
//             this._bytes.set(byteArray.subarray(offset, offset + availableBytes), this._position);
//             this.position += availableBytes;
//         }
//     }

//     /**
//      * 写入双精度浮点数
//      * @param {number} value
//      */
//     writeDouble(value) {
//         this.validateBuffer(DataTypeSize.SIZE_OF_FLOAT64);
//         this.data.setFloat64(this._position, value, this.$endian === EndianConst.LITTLE_ENDIAN);
//         this.position += DataTypeSize.SIZE_OF_FLOAT64;
//     }

//     /**
//      * 写入单精度浮点数
//      * @param {number} value
//      */
//     writeFloat(value) {
//         this.validateBuffer(DataTypeSize.SIZE_OF_FLOAT32);
//         this.data.setFloat32(this._position, value, this.$endian === EndianConst.LITTLE_ENDIAN);
//         this.position += DataTypeSize.SIZE_OF_FLOAT32;
//     }

//     /**
//      * 写入32位整数
//      * @param {number} value
//      */
//     writeInt(value) {
//         this.validateBuffer(DataTypeSize.SIZE_OF_INT32);
//         this.data.setInt32(this._position, value, this.$endian === EndianConst.LITTLE_ENDIAN);
//         this.position += DataTypeSize.SIZE_OF_INT32;
//     }

//     /**
//      * 写入16位整数
//      * @param {number} value
//      */
//     writeShort(value) {
//         this.validateBuffer(DataTypeSize.SIZE_OF_INT16);
//         this.data.setInt16(this._position, value, this.$endian === EndianConst.LITTLE_ENDIAN);
//         this.position += DataTypeSize.SIZE_OF_INT16;
//     }

//     /**
//      * 写入无符号32位整数
//      * @param {number} value
//      */
//     writeUnsignedInt(value) {
//         this.validateBuffer(DataTypeSize.SIZE_OF_UINT32);
//         this.data.setUint32(this._position, value, this.$endian === EndianConst.LITTLE_ENDIAN);
//         this.position += DataTypeSize.SIZE_OF_UINT32;
//     }

//     /**
//      * 写入无符号16位整数
//      * @param {number} value
//      */
//     writeUnsignedShort(value) {
//         this.validateBuffer(DataTypeSize.SIZE_OF_UINT16);
//         this.data.setUint16(this._position, value, this.$endian === EndianConst.LITTLE_ENDIAN);
//         this.position += DataTypeSize.SIZE_OF_UINT16;
//     }

//     /**
//      * 写入UTF字符串
//      * @param {string} value
//      */
//     writeUTF(value) {
//         const encoded = this.encodeUTF8(value);
//         const length = encoded.length;
//         this.validateBuffer(DataTypeSize.SIZE_OF_UINT16 + length);
//         this.data.setUint16(this._position, length, this.$endian === EndianConst.LITTLE_ENDIAN);
//         this.position += DataTypeSize.SIZE_OF_UINT16;
//         this._writeUint8Array(encoded, false);
//     }

//     /**
//      * 写入UTF字节字符串
//      * @param {string} value
//      * @param {number} length
//      */
//     writeUTFBytes(value, length) {
//         this._writeUint8Array(this.encodeUTF8(value, length));
//     }

//     /**
//      * 转换为字符串
//      * @returns {string}
//      */
//     toString() {
//         return `[AL_Framework_Byte_Array] length: ${this.length}, bytesAvailable: ${this.bytesAvailable}`;
//     }

//     /**
//      * 写入 Uint8Array 数据到缓冲区
//      * @private
//      * @param {Uint8Array} byteArray
//      * @param {boolean} validate
//      */
//     _writeUint8Array(byteArray, validate = true) {
//         const position = this._position;
//         const newPosition = position + byteArray.length;
//         if (validate) {
//             this.validateBuffer(newPosition);
//         }
//         this.bytes.set(byteArray, position);
//         this.position = newPosition;
//     }

//     /**
//      * 验证缓冲区大小
//      * @param {number} size
//      * @returns {boolean}
//      */
//     validate(size) {
//         const length = this._bytes.length;
//         return length > 0 && this._position + size <= length;
//     }

//     /**
//      * 验证缓冲区大小
//      * @param {number} size
//      */
//     validateBuffer(size) {
//         this.write_position = size > this.write_position ? size : this.write_position;
//         size += this._position;
//         this._validateBuffer(size);
//     }

//     /**
//      * 编码 UTF8 字符串
//      * @param {string} str
//      * @param {number} maxLength
//      * @returns {Uint8Array}
//      */
//     encodeUTF8(str, maxLength) {
//         let index = 0;
//         const codePoints = this.stringToCodePoints(str);
//         const bytes = [];

//         while (index < codePoints.length) {
//             const codePoint = codePoints[index++];
//             if (this.inRange(codePoint, 0xD800, 0xDFFF)) {
//                 this.encoderError(codePoint);
//             } else if (this.inRange(codePoint, 0x0000, 0x007F)) {
//                 if (maxLength == null) {
//                     bytes.push(codePoint);
//                 } else if (bytes.length + 1 < maxLength) {
//                     bytes.push(codePoint);
//                 } else {
//                     break;
//                 }
//             } else {
//                 let count;
//                 let offset;
//                 if (this.inRange(codePoint, 0x0080, 0x07FF)) {
//                     count = 1;
//                     offset = 0xC0;
//                 } else if (this.inRange(codePoint, 0x0800, 0xFFFF)) {
//                     count = 2;
//                     offset = 0xE0;
//                 } else if (this.inRange(codePoint, 0x10000, 0x10FFFF)) {
//                     count = 3;
//                     offset = 0xF0;
//                 } else {
//                     this.encoderError(codePoint);
//                 }

//                 if (maxLength == null) {
//                     bytes.push(this.div(codePoint, Math.pow(64, count)) + offset);
//                     while (count > 0) {
//                         const temp = this.div(codePoint, Math.pow(64, count - 1));
//                         bytes.push(0x80 + (temp % 64));
//                         count -= 1;
//                     }
//                 } else {
//                     let writtenBytes = 1;
//                     bytes.push(this.div(codePoint, Math.pow(64, count)) + offset);
//                     while (count > 0) {
//                         const temp = this.div(codePoint, Math.pow(64, count - 1));
//                         bytes.push(0x80 + (temp % 64));
//                         count -= 1;
//                         writtenBytes += 1;
//                     }
//                     if (bytes.length > maxLength) {
//                         bytes.splice(bytes.length - writtenBytes, writtenBytes);
//                         break;
//                     }
//                 }
//             }
//         }

//         if (maxLength != null && bytes.length < maxLength) {
//             let pad = maxLength - bytes.length;
//             while (pad > 0) {
//                 bytes.push(0);
//                 pad -= 1;
//             }
//         }

//         return new Uint8Array(bytes);
//     }

//     /**
//      * 解码 UTF8 字符串
//      * @param {Uint8Array} byteArray
//      * @returns {string}
//      */
//     decodeUTF8(byteArray) {
//         let byteIndex = 0;
//         let byteCount = byteArray.length;
//         let codePoint;
//         let byte1;
//         let byte2;
//         let byte3;
//         let byte4;
//         let value;
//         const codePoints = [];

//         while (byteIndex < byteCount) {
//             byte1 =            byteArray[byteIndex++];
//             if (byte1 === this.EOF_byte) {
//                 codePoint = this.EOF_code_point;
//             } else if (this.inRange(byte1, 0x00, 0x7F)) {
//                 codePoint = byte1;
//             } else if (this.inRange(byte1, 0xC2, 0xDF)) {
//                 byte2 = byteArray[byteIndex++];
//                 if (!this.inRange(byte2, 0x80, 0xBF)) {
//                     this.decoderError();
//                 }
//                 codePoint = ((byte1 & 0x1F) << 6) | (byte2 & 0x3F);
//             } else if (this.inRange(byte1, 0xE0, 0xEF)) {
//                 byte2 = byteArray[byteIndex++];
//                 if (!this.inRange(byte2, 0x80, 0xBF)) {
//                     this.decoderError();
//                 }
//                 if (byte1 === 0xE0 && !this.inRange(byte2, 0xA0, 0xBF)) {
//                     this.decoderError();
//                 }
//                 byte3 = byteArray[byteIndex++];
//                 if (!this.inRange(byte3, 0x80, 0xBF)) {
//                     this.decoderError();
//                 }
//                 codePoint = ((byte1 & 0x0F) << 12) | ((byte2 & 0x3F) << 6) | (byte3 & 0x3F);
//             } else if (this.inRange(byte1, 0xF0, 0xF4)) {
//                 byte2 = byteArray[byteIndex++];
//                 if (!this.inRange(byte2, 0x80, 0xBF)) {
//                     this.decoderError();
//                 }
//                 if (byte1 === 0xF0 && !this.inRange(byte2, 0x90, 0xBF)) {
//                     this.decoderError();
//                 }
//                 if (byte1 === 0xF4 && !this.inRange(byte2, 0x80, 0x8F)) {
//                     this.decoderError();
//                 }
//                 byte3 = byteArray[byteIndex++];
//                 if (!this.inRange(byte3, 0x80, 0xBF)) {
//                     this.decoderError();
//                 }
//                 byte4 = byteArray[byteIndex++];
//                 if (!this.inRange(byte4, 0x80, 0xBF)) {
//                     this.decoderError();
//                 }
//                 codePoint = ((byte1 & 0x07) << 18) | ((byte2 & 0x3F) << 12) | ((byte3 & 0x3F) << 6) | (byte4 & 0x3F);
//             } else {
//                 this.decoderError();
//             }

//             if (codePoint !== this.EOF_code_point) {
//                 if (codePoint <= 0xFFFF) {
//                     codePoints.push(codePoint);
//                 } else {
//                     value = codePoint - 0x10000;
//                     codePoints.push((value >> 10) + 0xD800);
//                     codePoints.push((value & 0x3FF) + 0xDC00);
//                 }
//             }
//         }

//         return String.fromCodePoint(...codePoints);
//     }

//     /**
//      * 编码错误处理
//      * @param {number} codePoint
//      */
//     encoderError(codePoint) {
//         throw new Error(`Encoding error: ${codePoint}`);
//     }

//     /**
//      * 解码错误处理
//      * @returns {number}
//      */
//     decoderError() {
//         return 0xFFFD; // Unicode replacement character
//     }

//     /**
//      * 判断值是否在范围内
//      * @param {number} value
//      * @param {number} min
//      * @param {number} max
//      * @returns {boolean}
//      */
//     inRange(value, min, max) {
//         return value >= min && value <= max;
//     }

//     /**
//      * 整除操作
//      * @param {number} value
//      * @param {number} divisor
//      * @returns {number}
//      */
//     div(value, divisor) {
//         return Math.floor(value / divisor);
//     }

//     /**
//      * 字符串转代码点
//      * @param {string} str
//      * @returns {number[]}
//      */
//     stringToCodePoints(str) {
//         const codePoints = [];
//         let index = 0;
//         const length = str.length;

//         while (index < length) {
//             const codeUnit = str.charCodeAt(index);
//             if (this.inRange(codeUnit, 0xD800, 0xDFFF)) {
//                 if (this.inRange(codeUnit, 0xDC00, 0xDFFF)) {
//                     codePoints.push(0xFFFD);
//                 } else if (index === length - 1) {
//                     codePoints.push(0xFFFD);
//                 } else {
//                     const nextCodeUnit = str.charCodeAt(index + 1);
//                     if (this.inRange(nextCodeUnit, 0xDC00, 0xDFFF)) {
//                         const highSurrogate = codeUnit & 0x3FF;
//                         const lowSurrogate = nextCodeUnit & 0x3FF;
//                         const codePoint = 0x10000 + (highSurrogate << 10) + lowSurrogate;
//                         codePoints.push(codePoint);
//                         index++;
//                     } else {
//                         codePoints.push(0xFFFD);
//                     }
//                 }
//             } else {
//                 codePoints.push(codeUnit);
//             }
//             index++;
//         }

//         return codePoints;
//     }
// }

// exports.AL_Framework_Byte_Array = AL_Framework_Byte_Array;
